
ClanLib包含一個简单的输入输出设备抽象层,是由CL_IODevice 类定义的。这個抽象层允许ClanLib 和妳的程序将相同的对象和函数用于不同的设备,例如文件、套接字、管道和内存缓冲区。
妳可以实现妳自己的输入/输出设备,只需实现CL_IODeviceProvider 接口并且将这個对象传递给CL_IODevice 构造函数。然而,在大部分情况下,妳只需简单地使用ClanLib 提供的标准输入/输出设备:
•.CL_File
•.CL_IODevice_Memory
•.CL_PipeConnection
•.CL_TCPConnection (clanNetwork)
文件的读写毫无压力。很简单,构造一個CL_File 对象,带上所需的打开模式、访问标志和共享标志,然后开始对它调用函数吧:
CL_File file("filename.txt", CL_File::open_existing, CL_File::access_read);
CL_DataBuffer buffer(file.get_size());
file.read(buffer.get_data(), buffer.get_size());
file.close();
其它与文件相关的操作都是由一些不同的辅助类支持的:
•.CL_FileHelp
•.CL_PathHelp
•.CL_Directory
•.CL_DirectoryScanner
CL_FileHelp包含一些静态函数,提供对文件的通用操作的支持,比如说复制或者删除一個文件。CL_PathHelp是一個与文件路径相关的辅助类。CL_Directory类包含一些对目录进行操作的静态函数,CL_DirectoryScanner 类用来列举出某個目录中的文件。
这些类的功能都很直观,所以我们不细说咯,只在下面提供一個简单的示例:
CL_FileHelp::delete_file("foobar.txt");
CL_Console::write_line("The file extension is %1", CL_PathHelp::get_extension("foobar.txt"));
CL_Console::write_line("Current directory is %1", CL_Directory::get_current());
CL_DirectoryScanner scanner;
if (scanner.scan("/", "*"))
{
while (scanner.next())
{
CL_Console::write_line(scanner.get_name());
}
}
ClanLib提供两个类来支持管道:
•.CL_PipeListen
•.CL_PipeConnection
CL_PipeListen用来创建一個命名管道,以让其它进程连接。CL_PipeConnection被用来进行实际的通信,并且表示两个节点之间的管道连接。
它的设计与clanNetwork 中的CL_TCPListen 和CL_TCPConnection 类似。
Zip文件格式的支持类:
•.CL_ZipArchive + CL_ZipEntry
•.CL_ZipReader + CL_ZipWriter
文件系统抽象类:
•.CL_VirtualFileSystem
•.CL_VirtualFileSource
•.CL_VirtualDirectory
•.CL_VirtualDirectoryListing
•.CL_VirtualDirectoryListingEntry
HxLauncher: Launch Android applications by voice commands